package ec.edu.ucacue.siop.modelo.recurso.equipo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cascade;
/**
 * 
 * @author edgar
 * Mantiene la informacion de los equipos y su asociacion a una unidad funcional
 */ 
@Entity
@Table(name="equipo")
public class Equipo implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2869816458460718034L;
	private long id;
	private String identificador;
	private String serial;
	private Equipamiento tipo;
	private EquipoAsignacion equipo;
	private List<Equipo> listaComponente;
	private Equipo padre;
	private List<EquipoRendimientoCompetencia> listaRendimiento;
	
	@Id
	@GeneratedValue
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	@Column(name="identificador", length= 32)
	public String getIdentificador() {
		return identificador;
	}
	public void setIdentificador(String identificador) {
		this.identificador = identificador;
	}
	@Column(name="serial", length=32)
	public String getSerial() {
		return serial;
	}
	public void setSerial(String serial) {
		this.serial = serial;
	}
	@ManyToOne
	public Equipamiento getTipo() {
		return tipo;
	}
	public void setTipo(Equipamiento tipo) {
		this.tipo = tipo;
	}
	@OneToOne
	public EquipoAsignacion getEquipo() {
		return equipo;
	}
	public void setEquipo(EquipoAsignacion equipo) {
		this.equipo = equipo;
	}
	@OneToMany(mappedBy ="padre", cascade=CascadeType.ALL)
	public List<Equipo> getListaComponente() {
		return listaComponente;
	}
	public void setListaComponente(List<Equipo> listaComponente) {
		this.listaComponente = listaComponente;
	}
	@ManyToOne
	public Equipo getPadre() {
		return padre;
	}
	public void setPadre(Equipo padre) {
		this.padre = padre;
	}
	@OneToMany(mappedBy="equipo", cascade=CascadeType.ALL)
	public List<EquipoRendimientoCompetencia> getListaRendimiento() {
		return listaRendimiento;
	}
	public void setListaRendimiento(
			List<EquipoRendimientoCompetencia> listaRendimiento) {
		this.listaRendimiento = listaRendimiento;
	}
	
}
